<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-bootable-grub" role="wrap">
  <?dbhtml filename="grub.html"?>

  <sect1info condition="script">
    <productname>grub</productname>
    <productnumber>&grub-version;</productnumber>
    <address>&grub-url;</address>
  </sect1info>

  <title>Использование GRUB для настройки процесса загрузки</title>

  <sect2>
    <title>Введение</title>

    <warning><para>Если вы настроите GRUB не правильно, то возможно, не получится штатно загрузиться в систему, без использования другого загрузочного устройства (например компакт-диска). Для загрузки системы LFS, эта глава не обязательна. Вы можете просто модифицировать ваш текущий системный загрузчик, например Grub-Legacy, GRUB2, или
    LILO.</para></warning>


    <para>Убедитесь, что аварийный загрузочный диск готов «спасти» ваш компьютер, если он перестанет правильно загружаться. Если у вас еще нет загрузочного устройства, вы можете его создать. Чтобы нижеследующая процедура работала, вам нужно перейти в BLFS и установить программу <userinput>xorriso</userinput> из пакета  <ulink
    url="&blfs-book;multimedia/libisoburn.html">
    libisoburn</ulink>.</para>


<screen role="nodump"><userinput>cd /tmp
grub-mkrescue --output=grub-img.iso
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen>

    <note>
      <para>Чтобы загрузить LFS в хост-системах с UEFI, ядро должно быть собрано с указанием соответствующего ключа конфигурации CONFIG_EFI_STUB. О сборке ядра, наиболее подробно, обсуждается в предыдущем разделе. Однако LFS можно загружать с помощью GRUB2 без такого дополнения. Для этого необходимо отключить функции UEFI Mode и Secure Boot в BIOS хост-системе. Для получения дополнительной информации см. <ulink
        url="http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt">
        the lfs-uefi.txt подсказку</ulink>.</para>
    </note>

  </sect2>

  <sect2>
    <title>Соглашения о именовании в GRUB</title>
    <para>GRUB использует собственную структуру именования дисков и разделов в виде <emphasis>(hdn,m)</emphasis>, где <emphasis>n</emphasis> - номер диска, а <emphasis>m</emphasis> - номер раздела. Номер диска начинается с нуля, а номер раздела начинается с единицы, для обычных разделов и с пяти для расширенных разделов. Обратите внимание, что именование отличается от предыдущих версий, когда оба номера начинались с нуля. Например, раздел sda1 равен <emphasis>(hd0,1)</emphasis> в GRUB, а <filename class="partition">sdb3</filename> - <emphasis>(hd1,3)</emphasis>. В отличие от Linux, GRUB не считает диски CD-ROM жесткими дисками. Например, если вы используете CD на <filename class="partition">hdb</filename> и второй жесткий диск на <filename class="partition">hdс</filename>, этот второй жесткий диск будет <emphasis>(hd1)</emphasis>.</para>

  </sect2>

  <sect2>
    <title>Настройка </title>

    <para>GRUB записывает данные на первый физический сектор
     жесткого диска. Эта область не является частью какой-либо файловой системы. Программы
     доступны как модули GRUB в загрузочном разделе в каталоге по умолчанию -/boot/grub/.</para>

    <para>Расположение загрузочного раздела - это ваш выбор, его можно настроить. Одна рекомендация состоит в том, чтобы иметь отдельный небольшой (рекомендуемый размер - 100 МБ) раздел только для загрузочной информации. Таким образом, каждая сборка, будь то LFS или какой-либо другой дистрибутив, может обращаться к тем же загрузочным файлам, и доступ может быть сделан из любой загруженной системы. Если вы решите это сделать, вам нужно будет примонтировать отдельный раздел, переместить все файлы из текущего каталога <filename class="directory">/boot</filename> (например, ядро Linux, которое вы только что создали в предыдущем разделе), в новый раздел. Затем вам нужно размонтировать раздел и примонтировать заново в каталог <filename
    class="directory">/boot</filename>. Если вы это сделаете, обязательно обновите данные в файле <filename>/etc/fstab</filename>.</para>

    <para>Использование текущего раздела lfs будет работать, но настройка для нескольких систем сложнее.</para>

    <para>Используя приведенную выше информацию, определите соответствующие точки монтирования для корневого раздела (или загрузочного раздела, если используется отдельный). В следующем примере предполагается, что корневой (или отдельный загрузочный) раздел является <filename
    class="partition">sda2</filename>.</para>

    <para>Установите файлы GRUB в каталог<filename
    class="directory">/boot/grub</filename> и настройте загрузочный сектор:</para>

    <warning>
      <para>Следующая команда перезапишет текущий загрузчик. Не
       выполняйте эту команду, если это нежелательно, например, если вы используете сторонний
       менеджер загрузки для управления главной загрузочной записью (MBR).</para>
    </warning>

<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>

  <note>
      <para>Если система была загружена с использованием UEFI,
      <command>grub-install</command> попытается установить файлы для
      <emphasis>x86_64-efi</emphasis> , но эти файлы не были кстановлены в главе 6. В этом случае, необходимо добавить аргумент
		<option>--target i386-pc</option>
		 к вышеуказанной комманде.</para>
    </note>

<!-- This does not seem to be true any more
    <note><para><application>grub-install</application> is a script and calls another
    program, grub-probe, that may fail with a message "cannot stat `/dev/root'".
    If so, create a temporary symbolic link from your root partition to /dev/root:</para>

<screen role="nodump"><userinput>ln -sv /dev/sda2 /dev/root</userinput></screen>

    <para>The symbolic link will only be present until the system is rebooted.
    The link is only needed for the installation procedure.
    </para></note>
-->
  </sect2>

  <sect2 id="grub-cfg">
    <title>Создание файла конфигурации GRUB </title>

    <para>Создайте файл конфигурации <filename>/boot/grub/grub.cfg</filename>:</para>

    <screen revision="sysv"><userinput>cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
<literal># Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
        linux   /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
}</literal>
EOF</userinput></screen>

    <screen revision="systemd"><userinput>cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
<literal># Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux &linux-version;-lfs-&versiond;" {
        linux   /boot/vmlinuz-&linux-version;-lfs-&versiond; root=/dev/sda2 ro
}</literal>
EOF</userinput></screen>


    <note><para>С точки зрения <application>GRUB</application>, файлы ядра относительны от используемого раздела. Если вы используете отдельные /boot раздел, удалите /boot из строки linux. Вам также потребуется изменить строку <emphasis>set root</emphasis>, чтобы указать на загрузочный раздел.</para></note>

    <para>GRUB - чрезвычайно мощная программа, и она обеспечивает огромное
     количество вариантов загрузки с самых разных устройств, работающих
     систем и типов разделов. Существует также множество вариантов настройки
     таких как графические экраны заставок, звуки воспроизведения, ввод мыши и т. д.
     детали этих вариантов выходят за рамки этого раздела.</para>

    <caution><para>Существует команда <application>grub-mkconfig</application>, которая может автоматически записывать файл конфигурации. Она использует набор скриптов в файле /etc/grub.d/ и уничтожит любые сделанные вами настройки. Эти сценарии предназначены в первую очередь для обычных дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете коммерческий дистрибутив Linux, есть вероятность, что эта программа будет запущена. Обязательно создайте резервную копию файла grub.cfg.</para></caution>

   </sect2>

</sect1>
